package com.zw.a.basic.a13.demo02_runnable;

//案例: 通过匿名内部类的方式实现多线程.
public class Demo02 {
    public static void main(String[] args) {
        //方式一:  继承Thread类.
        new Thread() {
            @Override
            public void run() {
                for (int i = 0; i < 100; i++) {
                    System.out.println("传智播客....  继承Thread类");
                }
            }
        }.start();

        //方式二:  实现Runnable接口, 匿名内部类.    采用面向对象的思想实现.
        //格式: new Thread(Runnable接口的子类对象).start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 100; i++) {
                    System.out.println("黑马程序员....  实现Runnable接口");
                }
            }
        }).start();

        //方式三:  实现Runnable接口, Lambda表达式,   采用函数式编程思想实现.
        //因为Lambda表达式这种方式没有显示的重写run()方法, 所以导致 通过start()方法开启线程的时候,
        //找不到对应的run()方法, 然后当做普通的方法调用了, 偶尔会看见抢资源的情况, 但是几率较小.
        new Thread(() -> {
            for (int i = 0; i < 100; i++) {
                System.out.println("博学谷....  Lambda表达式");
            }
        }).start();
    }
}
